package com.ruoyi.analyse.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.analyse.domain.QuestionAnalysis;

/**
 * 问题分析Service接口
 *
 * @author ruoyi
 */
public interface IQuestionAnalysisService
{
    /**
     * 查询问题分析
     *
     * @param analysisId 问题分析主键
     * @return 问题分析
     */
    public QuestionAnalysis selectQuestionAnalysisByAnalysisId(Long analysisId);

    /**
     * 查询问题分析列表
     *
     * @param questionAnalysis 问题分析
     * @return 问题分析集合
     */
    public List<QuestionAnalysis> selectQuestionAnalysisList(QuestionAnalysis questionAnalysis);

    /**
     * 新增问题分析
     *
     * @param questionAnalysis 问题分析
     * @return 结果
     */
    public int insertQuestionAnalysis(QuestionAnalysis questionAnalysis);

    /**
     * 修改问题分析
     *
     * @param questionAnalysis 问题分析
     * @return 结果
     */
    public int updateQuestionAnalysis(QuestionAnalysis questionAnalysis);

    /**
     * 批量删除问题分析
     *
     * @param analysisIds 需要删除的问题分析主键集合
     * @return 结果
     */
    public int deleteQuestionAnalysisByAnalysisIds(Long[] analysisIds);

    /**
     * 删除问题分析信息
     *
     * @param analysisId 问题分析主键
     * @return 结果
     */
    public int deleteQuestionAnalysisByAnalysisId(Long analysisId);

    /**
     * 分析问题内容并更新统计
     *
     * @param content 问题内容
     * @param userName 用户名
     * @return 分析结果
     */
    public Map<String, Object> analyzeQuestion(String content, String userName);

    /**
     * 获取热门关键词列表
     *
     * @param limit 限制数量
     * @return 热门关键词列表
     */
    public List<QuestionAnalysis> getTopKeywords(int limit, Long classId);

    /**
     * 按学科统计问题数量
     *
     * @return 学科统计
     */
    public List<Map<String, Object>> getSubjectStatistics(Long classId);

    /**
     * 获取按复杂度分类的问题统计
     *
     * @return 复杂度统计
     */
    public Map<String, Integer> getComplexityStatistics(Long classId);

    /**
     * 根据关键词和学科查询问题分析
     *
     * @param keyword 关键词
     * @param subject 学科
     * @return 问题分析
     */
    public QuestionAnalysis selectQuestionAnalysisByKeywordAndSubject(String keyword, String subject);


    /**
     * 获取问题类型统计
     * @return 问题类型及其数量的映射
     */
    public Map<String, Integer> getQuestionTypeStatistics(Long classId);
}
